//
//  main.m
//  OC作业
//
//  Created by dllo on 15/11/30.
//  Copyright © 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "LOClassF.h"
#import "Tree.h"
#import "Ball.h"
#import "Animal.h"
#import "Game.h"
#import "Clothes.h"
#import "Fruit.h"
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {


# pragma mark 11.30 作业
        
        /*1*/{
        
            /** 作业1  定义10个类:
             1、声明:实例变量、方法。实现:初始化方法、自定义方法、自我介绍方法。(方法实现时，以NSLog输出即可)
             2、在main.m中分别创建10个类的对象。
             3、给对象的实例变量进行赋值、取值操作，执行方法。
             */
        }
        
        /*2*/{
        
            /** 作业2  完成蓝欧班级开班仪式流程
             1.早上9.30开班仪式开始.(NSLog(@"开班仪式正式开始"))
             2.刘辉老师做自我介绍.
             3.三名学生做自我介绍
             需求:
             (1)定义一个班级类(LOClassF)
             实例变量:所属培训机构名称、班级名、班级人数、授课老师名字、开班日期.
             方法:初始化(设置学校名字:蓝欧)、集体活动、开班仪式。
             (2)定义一个老师类
             实例变量:名字、性别、年龄、正在教的课程。
             方法:初始化、讲课、布置、验收作业、解决问题、自我介绍。
             (3)定义一个学生类。
             实例变量:姓名、性别、年龄、学号。
             方法:初始化、学习、做作业、提出问题、回答问题、自我介绍。
             注:方法以NSLog输出为主
             */
//            LOClassF *class = [[LOClassF alloc]init];
//            class->_JGname = @"蓝欧";
//            class->_Classname = @"DLS151130";
//            class->_count = 25;
//            class->_Teachername = @"曹源";
//            class->_date = 11.06f;
//            
//            [class information];
//            
//            NSLog(@"JGname:%@, Classname:%@, count:%d, Teachername:%@, date:%.2f", class->_JGname, class->_Classname, class->_count, class->_Teachername, class->_date);
//            
//            
//            [class informationOFLOClassF:class];
        
        
        
        }
        
# pragma mark 12.01作业
        {
        /* 作业1: 为OC第一天写的10个类，添加setter、getter、初始化方法、便利构造器。 */
        
        
        
        
        
        
        
        
        
        
        
        /* 作业2: 僵尸作业。需求：
         1、定义普通僵尸类：
         实例变量：僵尸总血量、僵尸每次失血量。
         方法：初始化方法，便利构造器， setter和getter。
         2、定义路障僵尸类：
         实例变量：僵尸总血量、僵尸每次失血量，道具，弱点。
         方法：初始化方法，便利构造器，setter和getter。
         3、在main.m中创建普通僵尸对象、路障僵尸对象。 */
        
        /*Tree*/
        
        
//        Tree *tree = [[Tree alloc]initWithName:@"杨树" number:50];
//         NSLog(@"name:%@, number:%ld", [tree name], [tree number]);
//        
//        
//        Ball *ball = [[Ball alloc]initWithName:@"Foot" color:@"red"];
//        NSLog(@"name:%@, color:%@", [ball name], [ball color]);
//        
//        
//        
//        Animal *ani = [[Animal alloc] initWithName:@"老虎" sex:@"male" age:5];
//        NSLog(@"name:%@, sex:%@, age:%ld", [ani name], [ani sex], [ani age]);
//        
//        Game *game = [[Game alloc] initWithName:@"LOL" type:@"Net"];
//        NSLog(@"name:%@, type:%@", [game name], [game type]);
//        
//        Clothes *clo = [[Clothes alloc] initWithStyle:@"毛衣" size:@"大"];
//        NSLog(@"style:%@, size:%@", [clo style], [clo size]);
//        
//        Fruit *fruit = [[Fruit alloc] initWithName:@"Apple" skin:@"YES"];
//        NSLog(@"name:%@, skin:%@", [fruit name], [fruit skin]);
        }
        
     
# pragma mark 12.03作业
        /*1*/{
        
            /*题目要求：
            1、将“文艺青年”改为“213青年”。
            2、将整数123， 转换为字符串“123”。
            3、将“i love you”中的单词首字母大写“I Love You”。
            4、判断一个字符串是否以http开头，以png结尾，如果是，输出是一个有效链接，如果不是，输出链接错误。*/
#if 0
            NSString *str = @"文艺青年";
            NSString *str2 = [str stringByReplacingOccurrencesOfString:@"文艺青年" withString:@"2B青年"];
            NSLog(@"%@",str2);
#endif
#if 0
            int a = 123;
            NSString *str = [NSString stringWithFormat:@"%d",a];
            NSLog(@"str:%@", str);
            
#endif
        
#if 0
            NSString *str = @"i love you";
            NSString *str1 = str.capitalizedString;
            NSLog(@"str1:%@", str1);
        
#endif
            
#if 0
            NSString *str = @"http://www.baidu.png";
            if ([str hasPrefix:@"http"]) {
                NSLog(@"字符串以http开头");
            }
            if ([str hasSuffix:@"png"]){
                NSLog(@"以png结尾");
            }
            
            if ([str hasPrefix:@"http"] && [str hasSuffix:@"png"]) {
                NSLog(@"http://www.baidu.com");
            }else{
                NSLog(@"链接错误");
            }
            
            
            
#endif
            
        
        }
        
        
        /*2*/{
            /*题目要求：
            1、将整数123，存储为NSNumber类型的对象。
            2、将3.14159，存储为NSNumber类型的对象。
            3、将'c'，存储为NSNumber类型的对象。
            4、将YES，存储为NSNumber类型的对象。
            5、将上述OC的NSNumber类型的对象转回为基本数据类型。*/
            
#if 0
      
            int a = 123;
            NSNumber *num = [NSNumber numberWithInt:a];
            NSLog(@"num:%@",num);

      
            float b = 3.14159;
            NSNumber *num1 = [NSNumber numberWithFloat:b];
            NSLog(@"num:%@",num1);

            
            
#endif
        
        
        
        }
        
        
        /*3*/{
            /*题目要求：
            1、定义Student结构体，包含姓名，性别，年龄，分数，学号；定义该结构体的变量，并存储为NSValue类型的对象。
            
            2、定义NSRange类型的变量，存储为NSValue类型的对象。
            
            3、将上述NSValue类型的对象，转回为相应的数据类型。*/
        
        
        
        
        }
        
# pragma mark 12.04作业
        
       /*1*/
        {
            /*实现图书管理系统：
            1、使用数组管理所有书籍。
            2、数组可以添加、删除。
            3、可以从数组根据书名查找书籍，并修改书籍的价格。
            4、展示所有书籍清单（书名）。*/
            
            
            
            
            
            
            
            
            
        
        
        
        }
        
        
       
        
# pragma mark 12.08作业
        
        /*1*/{
            /*要求 ：
            1、创建1个包含5个字符串元素的数组；
            2、用for循环倒序输出所有元素；
                3、用for...in完成所有字符串元素的拼接(生成一个
                    新的字符串)，并输出拼接好的字符串。*/
#if 0
        
           NSArray *arr = @[@"zhang",@"wang",@"yu",@"meng",@"diao"];
            for (int i = 0; i < arr.count; i++) {
                NSLog(@"%@",arr[arr.count - i - 1]);
            }
            
            NSMutableString *str = [NSMutableString string];
            for (NSString *str1 in arr) {
                [str appendString:str1];
            }
            NSLog(@"%@",str);
            
#endif
        }
        
        
        /*2*/{
        
            /*要求：
            1、创建1个包含5个person对象的数组(姓名用英文)；
            2、用for循环找到年龄最大的Person对象；
                3、用for...in遍历数组，把大于某个年龄的Person对象的姓名后面拼接上字符串“-brother”。*/
        
            Person *per1 = [[Person alloc]initWithName:@"zhangsan" age:20 sex:@"male"];
            Person *per2 = [[Person alloc]initWithName:@"lisi" age:21 sex:@"female"];
            Person *per3 = [[Person alloc]initWithName:@"xiaoming" age:18 sex:@"male"];
            Person *per4 = [[Person alloc]initWithName:@"zang" age:20 sex:@"female"];
            Person *per5 = [[Person alloc]initWithName:@"tom" age:71 sex:@"male"];
            
            NSArray *arr0 = @[per1,per2,per3,per4,per5];
            

            
            
            
            
        
        }
        
        
        
        /*3*/{
        
            /*要求 ：
            1、使用第二题目中生成的数组；
            2、使用sortUsingSelector: 分别按年龄，姓名，性别进行排序，输出排序结果；
            3、使用NSSortDescriptor，按姓名进行排序。*/
            Person *per1 = [[Person alloc]initWithName:@"zhangsan" age:20 sex:@"male"];
            Person *per2 = [[Person alloc]initWithName:@"lisi" age:21 sex:@"female"];
            Person *per3 = [[Person alloc]initWithName:@"xiaoming" age:18 sex:@"male"];
            Person *per4 = [[Person alloc]initWithName:@"zang" age:20 sex:@"female"];
            Person *per5 = [[Person alloc]initWithName:@"tom" age:71 sex:@"male"];
            
            NSArray *arr2 = @[per1,per2,per3,per4,per5];

            
            
            
            NSArray *arr = [arr2 sortedArrayUsingSelector:@selector(compareWithAgeUP:)];
            for (Person *per in arr) {
                NSLog(@"%@ %ld",per.name,per.age);
            }
            
            printf("------\n");
            NSArray *newArr = [arr2 sortedArrayUsingSelector:@selector(compareWithNameDown:)];
            
            
            for (Person *per in newArr) {
                NSLog(@"%@",per.name);
            }
            printf("------\n");
            NSArray *newArr1 = [arr2 sortedArrayUsingSelector:@selector(compareWithSexUP:)];
            for (Person *per in newArr1) {
                NSLog(@"%@ %@",per.name,per.sex);
            }
            
            printf("------\n");
            NSSortDescriptor *nameDes = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
            
            NSArray *nArr = [arr sortedArrayUsingDescriptors:@[nameDes]];
            
            for (Person *per in nArr) {
                NSLog(@"%@",per.name);
            }
            
            
//            NSSortDescriptor *descriptor = [[NSSortDescriptor alloc]initWithKey:@"self" ascending:YES];
//            NSArray *resultArr = [arr sortedArrayUsingDescriptors:@[descriptor]];
//            
//            for (NSString *str in resultArr) {
//                NSLog(@"%@",str);
//            }
//            
//            NSSortDescriptor *des = [[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES];
//        
//            NSSortDescriptor *des1 = [[NSSortDescriptor alloc]initWithKey:@"age" ascending:YES];
//            NSArray *arr1 = [arr2 sortedArrayUsingDescriptors:@[des1,des]];
//            for (Person *per in arr1) {
//                NSLog(@"%@",per.name);
//            }
        }
        
        
        
        
        
        
        
        
    }
    return 0;
}
